from collections.abc import Iterable
from collections.abc import Iterator

print(isinstance([11, 22, 33], Iterable))
print(isinstance((11, 22, 33), Iterable))
print(isinstance("112233", Iterable))
print(isinstance(100, Iterable))

class Mates:
    def __init__(self):
        self.friends = list()
    
    def add(self, name):
        self.friends.append(name)

    def __iter__(self):
        # 一个类 如果实现了 __iter__() 就是可迭代对象
        # __iter__() 方法 必须返回一个迭代器的引用
        # 迭代器就是一个实现了__iter__()和__next__()的类
        return MatesIterator()

class MatesIterator:
    def __iter__(self):
        pass
    def __next__(self):
        return 11

mates = Mates()
mates.add("赵")
mates.add("钱")
mates.add("孙")
mates.add("李")

print("判断mates是不是可迭代对象: ", isinstance(mates, Iterable))
itator = iter(mates) # iter 自动调用类中的 __iter__() 方法
print("判断mates是不是可迭代对象: ", isinstance(itator, Iterator))
print("next()函数返回的__next__()的内容：", next(itator))
